#脚本中的方括号 [ ] 实际上是 test 命令，
#因此跟 C/C++ 程序语句不同，
#脚本的方括号两边必须留有空格，否则会报错。



#!/bin/bash
#read -p "请输入文件名：" file
# 判断输入是否为空,如果为空，不执行判断文件是否存在
#if [ -z "$file" ];
#then
#    echo "请输入文件名"
#    exit 1
#fi
# 判断文件是否存在
#if [ -e "$file" ];  # 这里需要用 $file 来引用变量
#then
#    echo "文件存在"
#else
#    echo "文件不存在"
#fi

# 输入两个数字，判断大小
#read -p "请输入一个数字：" a
#read -p "请输入一个数字：" b

#if [ "$a" -eq "$b" ]; 
#then
#    echo "a 等于 b"
#elif [ "$a" -gt "$b" ]; 
#then
#    echo "a 大于 b"
#elif [ "$a" -lt "$b" ]; 
#then
#    echo "a 小于 b"
#else
#    echo "a 不等于 b"
#fi

# 定义C语言关键字
keywords="while float double int long char do return main"

while true; do
    read -p "请输入变量名：" var
    
    # 1. 判断输入是否为空
    if [ -z "$var" ]; 
    then
        echo "错误：请输入变量名"
        continue
    fi
    
    # 2. 判断是否以数字开头
    if [[ "$var" =~ ^[0-9] ]]; 
    then
        echo "错误：变量名不能以数字开头"
        continue
    fi
    
    # 3. 判断是否为关键字
    if [[ " $keywords " =~ " $var " ]]; 
    then
        echo "错误：变量名不能为关键字"
        continue
    fi
    
    # 4. 判断是否包含非法字符（只能包含字母、数字和下划线）
    if [[ ! "$var" =~ ^[a-zA-Z0-9_]+$ ]]; 
    then
        echo "错误：变量名包含非法字符，只能包含字母、数字和下划线"
        continue
    fi
    
    # 所有检查通过
    echo "变量名合法"
    break
done
